# 定义学生类
class Student:
    # 初始化方法
    def __init__(self, id, name, sex, age, clazz):
        # 给对象的属性赋值
        self.id = id
        self.name = name
        self.sex = sex
        # 私有化变量，不让外部直接访问
        self.__age = age
        self.clazz = clazz

    # 定义str方法，在print时打印对象的内容
    # 默认打印内存地址
    def __str__(self):
        return f"student({self.id},{self.name},{self.sex},{self.__age},{self.clazz})"

    # 定义方法
    # 类的方法需要以来类的对象运行
    def modify_name(self, new_name):
        # 修改属性
        self.name = new_name

    # 可以定义方法访问是优化属性
    def get_age(self):
        return self.__age


# 创建类的实例
zhangsan = Student("001", "张三", "男", 23, "文科一班")
print(zhangsan, type(zhangsan))

# 调用类的方法
zhangsan.modify_name("张三1")

# 获取对象的属性
print(zhangsan.name)
print(zhangsan)

# 创建更多对象
lisi = Student("002", "李四", "男", 24, "文科一班")
print(lisi)
print(lisi.sex)
# 修改属性的值
lisi.sex = "女"
print(lisi.sex)

# 通过方法获取私有化属性的值
print(lisi.get_age())